/**
 * 目标：基于 express 软件包，开发提供省份列表的数据接口
 * 要求：get 请求方法，/api/province 的请求路径
 */
const fs = require('fs')
const path = require('path')
const express = require('express')
const server = express()

/**
 * 获取省份列表
 *   请求路径：/api/province
 *   请求方式：get
 *   返回值：省份列表数据
 *   测试：http://localhost:3000/api/province
 */
server.get('/api/province', (req, res) => {
  // 1. 读取文件
  const data = fs.readFileSync(path.join(__dirname, './data/province.json'))
  // 2. 响应给客户端
  // 响应客户端 .send()
  //  支持中文（自动添加 Content-Type）
  //  数组，对象（自动调用 JSON.stringify 转换成字符串）
  res.contentType('json')
  res.send(data.toString())
})

/**
 * 根据省份获取城市
 *   请求路径：/api/city
 *   请求参数：pname=河南省
 *   请求方式：get
 *   返回值：城市列表数据
 *   测试：http://localhost:3000/api/city?pname=河南省
 */
server.get('/api/city', (req, res) => {
  // 1. 获取请求参数（express 内置）
  const { pname } = req.query
  // 2. 读取文件
  const data = fs.readFileSync(path.join(__dirname, './data/city.json'))
  // 3. fs文件需要转换成对象
  const cityObj = JSON.parse(data.toString())
  // 4. 响应客户端（数组，对象 express 自动调用 JSON.stringify 转换成字符串）
  res.send(cityObj[pname])
})

// 其他接口同理 get 请求方法，/api/joke 请求路径
server.get('/api/joke', (req, res) => {
  res.send('讲个笑话')
})

server.all('*', (req, res) => {
  res.status(404)
  res.send('你要访问的资源路径不存在')
})

server.listen(3000, () => {
  console.log('Web 服务已启动')
})